#include "widget.h"
#include "ui_widget.h"



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //添加点击处理函数connect
    //我们在Linux网络编程编程中也学习过一个同名函数connect，用来给TCP socket建立连接的，写一个TCP客户端的时候，就需要先建立连接，然后才可以读写数据！（TCP三次握手相关的情况！！！）
    //面试中最高频的知识点 --- 三次握手！！！（QT中也是需要用到网络的！！！）
    //QT中的connect是QObject这个类提供的静态函数，这个函数的作用就是连接 "信号和槽" --- 和TCP的建立连接的过程没有关系！

    //四个参数：
    //第一个参数 --- 谁发的信号：是按钮发送的信号: ui->pushButton --- 这样的写法，可以访问到form file（ui文件）中创建的控件！简间接得到这个控件对象
    //其实就是ui_widget.中自动生成的代码中会包含一个 pushButton 的成员变量，变量的名字就是根据ObjectName的值！！！
    //这个控件会带有一个属性 --- ObjectName，这个属性的值是要求在界面中是唯一的！（会自动生成一个，当然我们也可以手动生成一个）
    //qmake就会在预处理 ui 文件的时候，根据这里的 objectName 生成对应的C++代码，C++代码中，该QPushButton对象的变量名字就是这里的objectName！
    //这个变量就是对应 ui 属性中的成员！

    //第二个参数 --- &QPushButton::clicked 是一个函数指针，点击按钮（ui->pushButton）的时候就会自动触发这个信号

    //第三个参数 --- this:指定关联到哪一个对象的槽函数上 --- 关联到this的Widget对象的槽函数上，也就是谁来处理这个信号

    //第四个参数 --- &handleClick 是一个函数指针，用来处理点击事件（自定义）
    connect(ui->pushButton, &QPushButton::clicked, this, &Widget::handleClick);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::handleClick()
{
    //当我们按钮被点击之后，我们将按钮中的文本进行切换 Hello World!!! ---> Hello QT!!!
    if(ui->pushButton->text() == QString("Hello World!!!"))
    {
        ui->pushButton->setText("Hello QT!!!");
    }
    else
    {
        ui->pushButton->setText("Hello World!!!");
    }

}
